home *** CD-ROM | disk | FTP | other *** search
/ Gamers Delight 2 / Gamers Delight 2.iso / Aminet / game / board / IGNUChess151.lha / GNUChess-1.51 / request.c < prev    next >
C/C++ Source or Header  |  1994-02-10  |  6KB  |  290 lines

  1. #include <exec/types.h>
  2.  
  3. #include <intuition/intuition.h>
  4. #include <intuition/gadgetclass.h>
  5.  
  6. #include <libraries/gadtools.h>
  7.  
  8. #include <stdlib.h>
  9. #include <string.h>
  10.  
  11. #include <proto/exec.h>
  12. #include <proto/intuition.h>
  13. #include <proto/gadtools.h>
  14.  
  15. #include "Global.h"
  16.  
  17. static struct EasyStruct AboutES = {
  18.     sizeof(struct EasyStruct),
  19.     0,
  20.     "About",
  21.     "GNUChess Intuition Interface by\n"
  22.     "  Michael Böhnisch,\n"
  23.     "  Löher Str. 2,\n"
  24.     "  33102 Paderborn,\n"
  25.     "  Federal Republic of Germany\n"
  26.     "GNUChess (c) 1986,1987 Free Software Foundation, Inc.",
  27.     "Yup."
  28. };
  29.  
  30. void About(void)
  31. {
  32.     EasyRequestArgs(w, &AboutES, NULL, NULL);
  33. }
  34.  
  35. static struct IntuiText PartieDataITx = {
  36.     COLOR_RAHMEN, COLOR_BCK, JAM1, 155, 8, &TA_Times18, " Game Data ", NULL
  37. };
  38.  
  39. static WORD PDBCord1[] = { 0, 252,    0,   0,  399, 0,  398, 1,    1,   1,  1, 251 };
  40. static WORD PDBCord2[] = { 0, 253,  399, 253,  399, 1,  398, 2,  398, 252,  1, 252 };
  41.  
  42. static struct Border PartieDataBordr2 = {
  43.     0, 0, COLOR_WFIG  , COLOR_BCK, JAM1, 6, PDBCord1, NULL
  44. };
  45.  
  46. static struct Border PartieDataBordr1 = {
  47.     0, 0, COLOR_RAHMEN, COLOR_BCK, JAM1, 6, PDBCord2, &PartieDataBordr2
  48. };
  49.  
  50. static struct Requester PartieDataReq = {
  51.     NULL,
  52.     0, 0, 400, 254, 0, 0,
  53.     NULL,
  54.     &PartieDataBordr1,
  55.     &PartieDataITx,
  56.     POINTREL | SIMPLEREQ | USEREQIMAGE,
  57.     COLOR_REQBCK,
  58.     NULL,
  59.     { 0 },
  60.     NULL,
  61.     NULL,
  62.     &Req1Image,
  63.     { 0 }
  64. };
  65.  
  66. char    Player1[STRSIZE],
  67.         Player2[STRSIZE],
  68.         Turnier[STRSIZE],
  69.         Opening[STRSIZE],
  70.         Notiz[STRSIZE];
  71. int        StartZugNr    = 1,
  72.         WhoBegins    = WHITE;
  73.  
  74. void PartieData(void)
  75. {
  76.     struct IntuiMessage    *msg;
  77.     int                    quit = FALSE;
  78.  
  79.     PartieDataReq.RWindow    = w;
  80.     PartieDataReq.ReqGadget = Req_GL;
  81.  
  82.     strcpy(GADGETSTR(Gad[GAD_WHITE     ]), Player1);
  83.     strcpy(GADGETSTR(Gad[GAD_BLACK     ]), Player2);
  84.     strcpy(GADGETSTR(Gad[GAD_TOURNAMENT]), Turnier);
  85.     strcpy(GADGETSTR(Gad[GAD_OPENING   ]), Opening);
  86.     strcpy(GADGETSTR(Gad[GAD_NOTE      ]), Notiz  );
  87.  
  88.     Request(&PartieDataReq, w);
  89.  
  90.     while ( ! quit ) {
  91.         WaitPort(IDCMPORT);
  92.         msg = GT_GetIMsg(IDCMPORT);
  93.         switch ( CLASS(msg) ) {
  94.             case IDCMP_REFRESHWINDOW:
  95.                 GT_BeginRefresh(w);
  96.                 GT_EndRefresh(w, TRUE);
  97.                 break;
  98.             case IDCMP_GADGETUP:
  99.                 switch ( GADGETID(msg) ) {
  100.                     case GAD_WHITE:
  101.                         ActivateGadget(Gad[GAD_BLACK], w, &PartieDataReq);
  102.                         break;
  103.                     case GAD_BLACK:
  104.                         ActivateGadget(Gad[GAD_TOURNAMENT], w, &PartieDataReq);
  105.                         break;
  106.                     case GAD_TOURNAMENT:
  107.                         ActivateGadget(Gad[GAD_OPENING], w, &PartieDataReq);
  108.                         break;
  109.                     case GAD_OPENING:
  110.                         ActivateGadget(Gad[GAD_NOTE], w, &PartieDataReq);
  111.                         break;
  112.                     case GAD_NOTE:
  113.                         ActivateGadget(Gad[GAD_WHITE], w, &PartieDataReq);
  114.                         break;
  115.                     case GAD_OK:
  116.                         strcpy(Player1, GADGETSTR(Gad[GAD_WHITE     ]));
  117.                         strcpy(Player2, GADGETSTR(Gad[GAD_BLACK     ]));
  118.                         strcpy(Turnier, GADGETSTR(Gad[GAD_TOURNAMENT]));
  119.                         strcpy(Opening, GADGETSTR(Gad[GAD_OPENING   ]));
  120.                         strcpy(Notiz,   GADGETSTR(Gad[GAD_NOTE      ]));
  121.                         quit = TRUE;
  122.                         break;
  123.                     case GAD_CANCEL:
  124.                         quit = TRUE;
  125.                         break;
  126.                     case GAD_CLEAR:
  127.                         strcpy(GADGETSTR(Gad[GAD_WHITE     ]), "");
  128.                         strcpy(GADGETSTR(Gad[GAD_BLACK     ]), "");
  129.                         strcpy(GADGETSTR(Gad[GAD_TOURNAMENT]), "");
  130.                         strcpy(GADGETSTR(Gad[GAD_OPENING   ]), "");
  131.                         strcpy(GADGETSTR(Gad[GAD_NOTE      ]), "");
  132.                         GT_BeginRefresh(w);
  133.                         RefreshGadgets(Req_GL, w, &PartieDataReq);
  134.                         GT_EndRefresh(w, TRUE);
  135.                         break;
  136.                     default:
  137.                         break;
  138.                 }
  139.                 break;
  140.             default:
  141.                 break;
  142.         }
  143.         GT_ReplyIMsg(msg);
  144.     }
  145.     EndRequest(&PartieDataReq, w);
  146. }
  147.  
  148. int NumberRequest(char *text, int def)
  149. {
  150.     static struct Requester NumberRequester = {
  151.         NULL,
  152.         0, 0, 200, 60, 0, 0,
  153.         NULL,
  154.         NULL,
  155.         NULL,
  156.         POINTREL | SIMPLEREQ,
  157.         COLOR_REQBCK,
  158.         NULL,
  159.         { 0 },
  160.         NULL,
  161.         NULL,
  162.         NULL,
  163.         { 0 }
  164.     };
  165.     struct Gadget            *gad, *glist = NULL;
  166.     static struct NewGadget    ng = { 50, 30, 100, 19, NULL, &TA_Courier15, 0, PLACETEXT_ABOVE, NULL, NULL };
  167.     int                        quit = FALSE, result;
  168.     struct IntuiMessage        *msg;
  169.  
  170.     ng.ng_VisualInfo = vi;
  171.     ng.ng_GadgetText = text;
  172.  
  173.     gad = CreateContext(&glist);
  174.     gad = CreateGadget(
  175.         INTEGER_KIND,
  176.         gad,
  177.         &ng,
  178.         GTIN_Number,            def,
  179.         GTIN_MaxChars,            10,
  180.         STRINGA_Justification,    GACT_STRINGCENTER,
  181.         TAG_DONE
  182.     );
  183.  
  184.     result = def;
  185.  
  186.     if ( gad ) {
  187.         gad->GadgetType |= GTYP_REQGADGET;
  188.         NumberRequester.ReqGadget = gad;
  189.         if ( Request(&NumberRequester, w) ) {
  190.             DrawBevelBox(
  191.                 NumberRequester.ReqLayer->rp,
  192.                 0, 0, 200, 60,
  193.                 GT_VisualInfo,    vi,
  194.                 TAG_DONE
  195.             );
  196.             ActivateGadget(gad, w, &NumberRequester);
  197.             while ( ! quit ) {
  198.                 WaitPort(IDCMPORT);
  199.                 msg = GT_GetIMsg(IDCMPORT);
  200.                 switch ( CLASS(msg) ) {
  201.                     case IDCMP_REFRESHWINDOW:
  202.                         GT_BeginRefresh(w);
  203.                         GT_EndRefresh(w, TRUE);
  204.                         break;
  205.                     case IDCMP_GADGETUP:
  206.                         result    = GADGETINT(GADGET(msg));
  207.                         quit    = TRUE;
  208.                         break;
  209.                 }
  210.                 GT_ReplyIMsg(msg);
  211.             }
  212.             EndRequest(&NumberRequester, w);
  213.         }
  214.     }
  215.     FreeGadgets(glist);
  216.     return result;            
  217. }
  218.  
  219. char *StringRequest(char *text, char *def)
  220. {
  221.     static struct Requester StringRequester = {
  222.         NULL,
  223.         0, 0, 200, 60, 0, 0,
  224.         NULL,
  225.         NULL,
  226.         NULL,
  227.         POINTREL | SIMPLEREQ,
  228.         COLOR_REQBCK,
  229.         NULL,
  230.         { 0 },
  231.         NULL,
  232.         NULL,
  233.         NULL,
  234.         { 0 }
  235.     };
  236.     struct Gadget            *gad, *glist = NULL;
  237.     static struct NewGadget    ng = { 50, 30, 100, 19, NULL, &TA_Courier15, 0, PLACETEXT_ABOVE, NULL, NULL };
  238.     int                        quit = FALSE;
  239.     static char                result[20];
  240.     struct IntuiMessage        *msg;
  241.  
  242.     ng.ng_VisualInfo = vi;
  243.     ng.ng_GadgetText = text;
  244.  
  245.     gad = CreateContext(&glist);
  246.     gad = CreateGadget(
  247.         STRING_KIND,
  248.         gad,
  249.         &ng,
  250.         GTST_String,            def,
  251.         GTST_MaxChars,            10,
  252.         STRINGA_Justification,    GACT_STRINGCENTER,
  253.         TAG_DONE
  254.     );
  255.  
  256.     strcpy(result, def);
  257.  
  258.     if ( gad ) {
  259.         gad->GadgetType |= GTYP_REQGADGET;
  260.         StringRequester.ReqGadget = gad;
  261.         if ( Request(&StringRequester, w) ) {
  262.             ActivateGadget(gad, w, &StringRequester);
  263.             DrawBevelBox(
  264.                 StringRequester.ReqLayer->rp,
  265.                 0, 0, 200, 60,
  266.                 GT_VisualInfo,    vi,
  267.                 TAG_DONE
  268.             );
  269.             while ( ! quit ) {
  270.                 WaitPort(IDCMPORT);
  271.                 msg = GT_GetIMsg(IDCMPORT);
  272.                 switch ( CLASS(msg) ) {
  273.                     case IDCMP_REFRESHWINDOW:
  274.                         GT_BeginRefresh(w);
  275.                         GT_EndRefresh(w, TRUE);
  276.                         break;
  277.                     case IDCMP_GADGETUP:
  278.                         strcpy(result, GADGETSTR(GADGET(msg)));
  279.                         quit    = TRUE;
  280.                         break;
  281.                 }
  282.                 GT_ReplyIMsg(msg);
  283.             }
  284.             EndRequest(&StringRequester, w);
  285.         }
  286.     }
  287.     FreeGadgets(glist);
  288.     return result;            
  289. }
  290.